var db, audio;

var setting = new function () {
    this.reload     = localStorage['reload']   ? localStorage['reload']   : 0.5; // заполняю обект данными о настройках
    this.volume     = localStorage['volume']   ? localStorage['volume']   : 0.5;
    this.timezone   = localStorage['timezone'] ? localStorage['timezone'] : 3;
    this.nick       = localStorage['nick'];
    this.sound      = 'notification.wav';

    this.setReload  = function (o) {
        this.reload = localStorage['reload'] = o.value; // Если изменилось сохраняем
        chrome.extension.sendRequest({msg: "setting"}); // Включаем порт
    };
    
    this.setVolume = function (o) {
        this.volume = localStorage['volume'] = audio.volume = o.value;
        chrome.extension.sendRequest({msg: "setting"}); // Включаем порт
        audio.play();
    };

    this.setNick = function (o) {
        this.nick = localStorage['nick'] = o.value;
        chrome.extension.sendRequest({msg: "setting"});
    };

    this.setTimezone = function (o) {
        this.timezone = localStorage['timezone'] = o.value;
        viewForum(); // Обновляем дом
    };

    this.setInput = function () { // Заполняем дом настройками
        $('#reload').val(setting.reload);
        $('#volume').val(setting.volume);
        $('#nick').val(setting.nick);
        $('#timezone').find('option[value="' + this.timezone + '"]').prop('selected', true);
    };
};

var pop = new function () {
    this.viewSet  = false; // Показаны настройки или нет
    this.clickSet = true;  // Чтобы небыло глюков при многоразовом нажатии определяет выполняется анимация открытия или закрытия настроек
    this.reload   = false; // Обновление
    this.open     = function () {
        if (this.toggle) {
            return false;
        } else {
            this.toggle = true;
        }
        // Далее раскрываем анимацией попу
        $('#window-topic').slideDown(250, function () {
            $('#window-topic').find('div.blockform').animate({width: '400px'}, 250, function () {
                $('#window-topic-main').css("display", "inline");
                $('#forum').slideDown(250);
            });
        });
    };
    this.toggleSet = function (a) {
        if (this.clickSet) {
            this.clickSet = false;
        } else {
            return false;
        }
        var setObject = $('#window-topic-set');
        if (this.viewSet || a) {
            setObject.slideUp(250, function () {
                pop.clickSet = true;
                pop.viewSet = false;
            });
        } else {
            setting.setInput();
            setObject.slideDown(250, function () {
                pop.clickSet = true;
                pop.viewSet = true;
            });
        }
    };
    this.frame = function (a) {
        $('#window-topic').slideToggle(250, function () {
            $("body").animate({width: "800px", height: "590px"}, 250);
            $(this).html('<iframe id="frame" src="' + a + '" style="width: 799px; height: 587px; position: fixed; top: -1px; left:-1px;" onload="frameOnload();" /></iframe>');
        });
    };
};


var reload = new function () {
    this.active = function () {
        $('#window-topic').find('div.window-reload:first').removeClass('window-reload-off').addClass('window-reload-on');
    };
    this.off    = function () {
        $('#window-topic').find('div.window-reload:first').removeClass('window-reload-on').addClass('window-reload-off');
    };
};


$(document).ready(function () {
    audio = new Audio(setting.sound);
    audio.volume = setting.volume;

    db = getForum(); // Выгружаю с базы данные форума.

    pop.open();
    viewForum(); // Вывод с базы на страницу
    setTimeout(connect, 1000); // Обновляем через минуту
    $('#window-topic').find('tr').each(function () {    // Цепляем к ссылку обработчики
        $(this).find("a[href^='http']").click(function (e) { // Открываем в фрейме
            e.preventDefault();
            setTimeout("pop.frame('" + this.href + "');", 1000);
        }).dblclick(function () { // Открываем в новой вкладке
            window.open(this.href, '');
        });
    });

    chrome.extension.sendRequest({msg: "blink"}); // отключаем мигалку


    $("#openForum").click(function () {
        setTimeout(function () {
            pop.frame('http://wapinet.ru/forum/');
        }, 1000);
    }).dblclick(function () {
        window.open('http://wapinet.ru/forum/', '');
    });


    $("#reload").mouseup(function () {
        setting.setReload(this);
        $('#info').text(this.value == 0 ? 'Выкл' : 'Минуты');
    }).mouseover(function () {
        $('#info').text(this.value == 0 ? 'Выкл' : 'Минуты');
    }).mouseout(function () {
        $('#info').empty();
    });

    $("#volume").mouseup(function () {
        setting.setVolume(this);
        $('#info').empty();
    }).change(function () {
        $('#info').text(this.value == 0 ? 'Выкл' : Math.round(this.value * 100) + '%');
    });

    $("#nick").keyup(function () {
        setting.setNick(this);
    }).blur(function () {
        setting.setNick(this);
    }).change(function () {
        setting.setNick(this);
    });

    $("#timezone").change(function () {
        setting.setTimezone(this);
    });

    $("#refresh").click(connect);
});


function viewForum () { // Заполняется дом
    var dom;

    for (var i in db) {
        dom = $('#window-topic').find('tbody tr:eq(' + (i - 3) + ')');

        dom.find('td.tcr a').attr('href', (db[i]['last_post_id'] ? 'http://wapinet.ru/forum/viewtopic.php?pid=' +
            db[i]['last_post_id'] + '#' +
            db[i]['last_post_id'] : 'http://wapinet.ru/forum/viewforum.php?id=' + i))
                .text(db[i]['subject'] ? db[i]['subject'] : 'Нет данных');

        dom.find('td.tcr span.byuser').text((db[i]['last_post_time'] ? parseDate(((intval(db[i]['last_post_time']) - 7200) + (setting.timezone * 3600)) * 1000) : '') + 
            ' ' + (db[i]['last_poster'] ? db[i]['last_poster'] : 'Обновите данные'));

        if (!db[i]['icon']) {
            dom.removeClass('inew').find('div.icon').removeClass('inew');
        } else {
            dom.addClass('inew').find('div.icon').addClass('inew');
            localStorage['forum[' + i + '][icon]'] = ''; // Сохраняем как просмотренное
        }
    }
}


function frameOnload() {
    $('#window-topic').slideDown(250);
}